实验四:文件状态测试 |
您所在的位置:网站首页 › shell 文件测试 › 实验四:文件状态测试 |
实验目的
熟悉UNIX的基本SHELL程序设计方法,包括: 命令行参数检测 变量设置 文件状态检测与特定信息读取 程序运行控制 实验内容编写一个SHELL程序,动态检测指定文件的状态信息,当文件的大小发生改变时,给出提示信息,并继续前进检测。 当文件的大小的变化次数或持续检查无变化次数达到一定值时,退出检查,程序结束。 实验内容:shell程序设计思路(1)清屏; (2)提示用户输入要检测其状态的文件名; (3)显示该文件的状态信息(提示:该状态信息可由命令ls –l 来得到),或找不到该文件时的错误提示; (4)用cut命令,或用sed或awk命令来截取状态信息中文件的大小并保存; (5)每隔5秒钟检测一次该文件大小的信息,并与保存的文件原来的大小相比较; (6)如果文件大小未改变,则屏幕显示不变,并继续每隔5秒钟检测一次; (7)如果文件大小已改变,则保存新的文件大小,并在屏幕上显示:file [ filename ] size changed(括号中的filename为本程序运行时用户输入的被检测的文件名)。程序继续每隔5秒钟检测一次文件的大小; (8)程序循环执行5~7步的操作。当被检测的文件或者已累计改变了两次大小,或者已连续被检测了十次还未改变大小时,给出相应提示,然后清屏退出。 实验内容:shell程序设计思路(1)清屏; clear(2)提示用户输入要检测其状态的文件名; echo “Input name:” read fname(3)显示该文件的状态信息(提示:该状态信息可由命令ls –l 来得到),或找不到该文件时的错误提示; 用 if test –f $fname # 这里也可以用:if [ -f $name],测试文件是否存在 then fi ls –l [ $fname]linux中ls -l命令以长格式显示目录下的内容列表。 输出的信息从左到右依次包括文件名、文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等 (4)用cut命令,或用sed或awk命令来截取状态信息中文件的大小并保存; ls –l [ $fname] | cut –c 36-46 #管道:文件大小是在36列到46列 oldstat=` ` #注意是单撇号(5)每隔5秒钟检测一次该文件大小的信息,并与保存的文件原来的大小相比较; while [ xxx -ne. 2 ] do …… done if [ “$oldstat”=“$newstat” ] then ……. fi(6)如果文件大小未改变,则屏幕显示不变,并继续每隔5秒钟检测一次; (7)如果文件大小已改变,则保存新的文件大小,并在屏幕上显示:file [ filename ] size changed(括号中的filename为本程序运行时用户输入的被检测的文件名)。程序继续每隔5秒钟检测一次文件的大小; (8)程序循环执行5~7步的操作。当被检测的文件或者已累计改变了两次大小,或者已连续被检测了十次还未改变大小时,给出相应提示,然后清屏退出。 计数: test_count=`expr $test_count + 1` change_count=`expr $change_count + 1`. #注意,数学运算命令expr,两边用单撇号 参考代码 # #detect file status # tput clear # clear screen echo "Please input file name:" read filename filesize=`ls -l $filename | awk '{ print $5 }'` echo $filesize cursize=`ls -l $filename | awk '{ print $5}'` echo $cursize change=0 unchange=0 while [ "$change" -le 1 -a "$unchange" -le 9 ] do if [ "$filesize" == "$cursize" ] then unchange=`expr $unchange + 1` echo "unchange=$unchange" else filesize=$cursize change=`expr $change + 1` echo "file $filename size changed" fi sleep 5 sync cursize=`ls -l $filename | awk '{ print $5 }'` done; echo "finish" exit 0 程序要求达到的运行效果./test05.sh运行程序 1、程序运行时,如果找不到指定的文件,程序提示错误信息: 创建test.txt文件,输入123456 2、运行程序,输入要检查的文件名file1,在十次检查周期内,文件大小都一直不变的情况下,程序输出如下信息:
3、一旦当发现检查的文件大小改变时,程序显示如下信息: 监测过程中文件大小改变1次 后台修改文件内容
监测过程中文件大小改变2次 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |